const { Controller } = require('egg');
const jwt = require('jsonwebtoken');
// const crypto = require('crypto'); // 用于密码加密的库（例如 bcrypt、argon2 等）
class UserController extends Controller {
  async index() {
    const { ctx } = this;
    const userLogin = await this.app.mysql.get('user', ctx.request.body);
    // 在 post 表中，插入 title 为 Hello World 的记录
    if (userLogin) {
      const users = ctx.request.body;
      const userId = ctx.request.body;
      console.log(users, 'USER-');
      
      const token = jwt.sign(ctx.request.body, 'chen', { expiresIn: '1h' });
      ctx.body = {
        code: 0,
        message: '登录成功==Succsess=',
        users: ctx.request.body,
        userId: ctx.request.body,
        token,

      };
    } else {
      ctx.body = {
        code: 1,
        message: '登录失败==Error=',

      };
    }
  }
  // async register() {
  //   const { ctx } = this;
  //   const userinsert = await this.app.mysql.insert('user');
  //   if (userinsert) {
  //     ctx.body = {
  //       code: 0,
  //       message: '注册成功==Succsess=',

  //     };
  //   } else {
  //     ctx.body = {
  //       code: 1,
  //       message: '注册失败==Error=',

  //     };
  //   }
  // }
  async register() {
    const { ctx, app } = this;
    // 从请求体中获取用户名和密码（这里假设你已经验证了这些数据）
    const { username, password } = ctx.request.body;

    // 插入用户到数据库（这里简化了验证和密码加密逻辑）
    try {
      // 注意：你需要指定要插入的数据，例如 { username, password: 加密后的密码 }
      const result = await app.mysql.insert('user', { username, password }); // 这里假设密码是明文，实际上应该加密

      // 检查插入结果，通常如果插入成功，result 会是一个包含新插入数据 ID 的对象
      if (result.affectedRows > 0) { // 确保检查的是正确的属性，这取决于你的数据库库或ORM
        ctx.body = {
          code: 0,
          message: '注册成功==Success=',
        };
      } else {
        // 如果没有插入行（即插入失败），发送错误响应
        ctx.body = {
          code: 1,
          message: '注册失败==Error=',
        };
      }
    } catch (err) {
      // 处理任何可能的数据库错误
      ctx.body = {
        code: 2,
        message: '数据库错误=' + err.message,
      };
    }
  }

}

module.exports = UserController;
